En   Sk  
 
 
 
 
 
 
 
 

Články o Px Frameworku:


PxGreatRepeater - komponenta pre zadávanie dát, ktoré sa svojou štruktúrou opakujú, maximálny počet hodnôt je limitovaný



Komponenta PxGreatRepeater slúži na zadávanie dát, ktoré sa svojou štruktúrou cyklicky opakujú. Taký jednoduchý príklad, kde sa dáta opakujú, môžeme nájsť pri osobe, ktorá má telefónne číslo, respektíve môže mať týchto telefónnych čísel viac. Dole je zobrazený ovládací prvok PxGreatRepeater, na zadanie tel. čísla:

Obrázok komponenty PxGreatRepeater


Samozrejme cez ovládací prvok PxGreatRepeater, môžeme zadať viac telefónnych čísiel, viac obrázok dolu:

Obrázok komponenty PxGreatRepeater - 3x


Tlačítkom plus "+" pridávame nové okienka pre zadanie telefónneho čísla, tlačítkom "-" môžeme mazať už existujúce telefónne čísla. A teraz ako to funguje v praxi. Do tabuľky adresár si doplníme nasledujúce stĺpce:

Tel1 VARCHAR2(50),
Tel_Pozn1 VARCHAR2(50),
Tel2 VARCHAR2(50),
Tel_Pozn2 VARCHAR2(50),
Tel3 VARCHAR2(50),
Tel_Pozn3 VARCHAR2(50)


Ako vidíte do tabuľky adresár sme zadali položku telefón(tel1, tel2, tel3) tri krát. Teda pri zadávaný telefónneho čísla a jeho poznámky budeme limitovaný, môžeme zadať maximálne tri telefónne čísla, aj s poznámkou. Zadávanie a mazanie, môžeme manažovať tlačítkom plus "+" a tlačítkami mínus "-".

Na to aby sme komponentu PxGreatRepeater pripojili ku komponente PxWebQuery, potrebujeme uvaliť parameter AddParamGreatWebQuery na komponentu PxWebQuery.

Na to, aby Vám komponenta PxGreatRepeater, správne fungovala musíte uvaliť parameter AddParamGreatWebQuery, na danú komponentu PxWebQuery, ktorá bude zobrazovať alebo pracovať s takto štruktúrovanými dátami. Definícia parametra AddParamGreatWebQuery vyzerá nasledovne:

wquAdresar.AddParamGreatWebQuery("Telefon", "Tel1;Tel_Pozn1", "Tel1 - Tel_Pozn1", 3, "mvNormal");


Popis Parametrov metody AddParamGreatWebQuery:
C# syntax:

public void AddParamGreatWebQuery(string aFieldName,
            string aEditAllFieldNames,
            string aExpresionToView,
            Int16 aMaxRepeatCount,
            string aModeToView)

Popis parmetrov:

aFieldName - Meno stĺpca, ktorý sa vytvorí ako nový stĺpec v tabuľke na ktorý sa aplikuje metóda AddParamGreatWebQuery, a na ktorý sa potom napája komponenta PxGreatRepeater (toto meno stĺpca musí byť jedinečne, v tabuľke nesmie existovať stĺpec s týmto menom).
aEditAllFieldNames - Tu sa vypíšu všetky mená stĺpcov, ktoré sa budú editovať v komponente PxGreatRepeater, presne v poradí v akom budú zoradené v komponente PxGreatRepeater. Jednotlivé stĺpce sú oddelené bodkočiarkou. Tieto mená stĺpcov budú pozostávať zo stĺpcov ktoré sa cyklicky opakujú, t.j. Tel1..až..Tel3, a vždycky sa zadá meno stĺpca, ktorý sa začína jednotkou.
aExpresionToView - Tu sa vypíšu mená všetkých stĺpcov, ktoré sa majú zobrazovať v Gride. Tieto mena môžu byť medzi sebou oddelene čiarkou alebo pomlčkou, ktoré sa zobrazia pri zobrazený v Gride(PxSuperGrid).
aMaxRepeatCount - Touto hodnotou sa stanovuje maximálny počet telefónnych čísel, ktoré je možné zadať prostredníctvom komponenty PxGreatRepeater. Ak sme do databázy prirobili stĺpce tel1, tel2, tel3 potom hodnota tejto premennej bude 3.
aModeToView - Týmto reťazcom sa definuje zobrazenie dát v komponente PxSuperGrid, v našom prípade stĺpca zadefinovaného v položke aFieldName. Existujúce módy zobrazenia sú nasledovné: mvBreakHR, mvLineNumber a mvNormal.

Pri zadaní reťazca "Tel1 - Tel_Pozn1" do položky ExpresionToView, nastavenom móde zobrazenia mvNormal, bude zobrazenie v komponente PxSuperGrid vyzerať nasledovne:

Komponenty PxGreatRepeater - mod mvNormal


Pri zadaní reťazca "Tel1 - Tel_Pozn1" do položky ExpresionToView, nastavenom móde zobrazenia mvBreakHR, bude zobrazenie v komponente PxSuperGrid vyzerať nasledovne:

Komponenty PxGreatRepeater - mod mvBreakHR


Pri zadaní reťazca "Tel1 - Tel_Pozn1" do položky ExpresionToView, nastavenom móde zobrazenia mvLineNumber, bude zobrazenie v komponente PxSuperGrid vyzerať nasledovne:

Komponenty PxGreatRepeater - mod mvLineNumber


Na to aby sme zredukovali počet zobrazených stĺpcov v Gride použijeme property VisibleFields komponenty PxSuperGrid, viac ukážka dole:

grdAdresar.VisibleFields = "name;idpravnaforma;address;miesto;telefon";


Do property VisibleFields sme priradili názvy stĺpcov, oddelených bodkočiarkou, ktoré sa majú zobraziť pri zobrazený v komponente PxSuperGrid-u. Ak v property VisibleFields, nie je priradené žiadna hodnota, v komponente PxSuperGrid-u sa nám zobrazia všetky stĺpce(fields). Samozrejme všetky stĺpce sa nám v komponente PxSuperGrid zobrazia presne v tom poradí, v akom poradí sme ich zadali do property VisibleFields.

Property VisibleFields, na to aby správne fungovala, musíme byť definovaná pred pripojením a bindovaním na komponentu PxWebQuery.

grdAdresar.VisibleFields = "name;idpravnaforma;address;miesto;telefon";
grdAdresar.PxDataSource = wquAdresar;
grdAdresar.DataBind();


Výsledný PxSuperGrid bude vyzerať nasledovne:

Komponenty PxGreatRepeater - zobrazenie v gride


A tu v ďalšom máte výpis zdrojového kódu súboru Adresar.aspx.cs, pre aplikáciu parametra AddParamGreatWebQuery na komponentu wquAdresar. V príklade sú uvedené zadania dvoch parametrov, a to telefónnu a faxu:

protected void Page_Load(object sender, EventArgs e)
{
  if ((!IsPostBack)&&(wquAdresar.Active==false))
  {
    string sSQLText1 = "select IDPravForm as Key, Name as Value from PravForm Order By Value";
    wquAdresar.ConnectString = "User Id=skodapeter;Password=aa;Data Source=xe;";

    wquAdresar.SQLSelect = @"select idadresar , name, address, idpravnaforma,
      create_date, invalid_adress, idkraj, idokres, idobec, tel1, tel_pozn1, tel2, tel_pozn2,
      tel3, tel_pozn3, fax1, fax_pozn1, fax2, fax_pozn2 from Adresar04";

    wquAdresar.AddParamKey("idpravnaforma", "Key", "Value", "Value", "Key", sSQLText1);
    wquAdresar.AddParamCheck("invalid_adress", "A", "N", false);
    wquAdresar.AddParamFlyComboBox("miesto", "idkraj;idokres;idobec", "idkraj;idokres;idobec",
      "kraj;okres;obec", "Obec;Okres;Kraj", "wquObec", "mvNameAndBR");

    wquAdresar.AddParamGreatWebQuery("Telefon", "Tel1;Tel_Pozn1", "Tel1 - Tel_Pozn1", 3,
    "mvLineNumber");
    wquAdresar.AddParamGreatWebQuery("Fax", "Fax1;Fax_Pozn1", "Fax1 - Fax_Pozn1", 2, "");


    wquAdresar.Open();

    wquAdresar.Columns["idadresar"].Caption = "ID";
    wquAdresar.Columns["name"].Caption = "Meno Osoby";
    wquAdresar.Columns["idpravnaforma"].Caption = "Právna Forma";
    wquAdresar.Columns["address"].Caption = "Ulica";
    wquAdresar.Columns["create_date"].Caption = "Dátum založenia";
    wquAdresar.Columns["invalid_adress"].Caption = "Adresa neplatná";
    wquAdresar.Columns["miesto"].Caption = "Obec, Okres";
    wquAdresar.Columns["tel1"].Caption = "Telefón";
    wquAdresar.Columns["tel_pozn1"].Caption = "Poznámka";
    wquAdresar.Columns["tel2"].Caption = "Telefón";
    wquAdresar.Columns["tel_pozn2"].Caption = "Poznámka";
    wquAdresar.Columns["tel3"].Caption = "Telefón";
    wquAdresar.Columns["tel_pozn3"].Caption = "Poznámka";
    wquAdresar.Columns["fax1"].Caption = "Fax";
    wquAdresar.Columns["fax_pozn1"].Caption = "Poznámka";
    wquAdresar.Columns["fax2"].Caption = "Fax";
    wquAdresar.Columns["fax_pozn2"].Caption = "Poznámka";
    wquAdresar.Columns["telefon"].Caption = "Spojenie";
  }
  else
  {
  }
  grdAdresar.VisibleFields = "name;idpravnaforma;address;miesto;telefon";
  grdAdresar.PxDataSource = wquAdresar;
  grdAdresar.DataBind();
}


Pokiaľ chceme vo formulári AddAdresar.aspx použiť komponentu PxGreatRepeater na editáciu, tak ju v tomto súbore zadefinujeme nasledovne:

<Prx:PxWebQuery ID="wquAdresar" runat="server" Value="wquAdresar"/>

<Prx:PxEdit ID="edtIDADRESAR" runat="server" AddTableRow="True" TableBegin="True"></Prx:PxEdit>
<Prx:PxEdit ID="edtName" runat="server" AddTableRow="True" ></Prx:PxEdit>
<Prx:PxComboBox ID="cmbPravnaForma" runat="server" AddTableRow="True" ></Prx:PxComboBox>
<Prx:PxJSDatePicker ID="edtCREATE_DATE" runat="server" AddTableRow="True" ></Prx:PxJSDatePicker>
<Prx:PxCheckBox ID="chkInvalid_Adress" runat="server" AddTableRow="True" ></Prx:PxCheckBox>
<Prx:PxEdit ID="edtADDRESS" runat="server" AddTableRow="True" TableEnd="True"></Prx:PxEdit>
<Prx:PxFlyComboBox ID="fcmbMiesto" runat="server"></Prx:PxFlyComboBox>
<br />
<Prx:PxGreatRepeater ID="gtrTelefon" runat="server"></Prx:PxGreatRepeater>
<br />
<Prx:PxGreatRepeater ID="gtrFax" runat="server"></Prx:PxGreatRepeater>
<br />


V súbore AddAdresar.aspx.cs prepojíme komponentu PxGreatRepeater s komponentou wquAdresar, toto prepojenie by malo vyzerať nasledovne:

gtrTelefon.PxDataSource = wquAdresar;
gtrTelefon.FieldName = "telefon";

gtrFax.PxDataSource = wquAdresar;
gtrFax.FieldName = "fax";


Komponenta PxGreatRepeater nepodporuje zarovnanie a property AddTableRow, TableBegin a TableEnd, ktoré podporujú ostatné komponenty PxEdit apod., a preto treba použiť tág <BR />.

Popisky v Gride(Title) a popisky v komponente PxGreatRepeater (Caption), sa dajú definovať centrálne pri definícii komponenty wquAdresar:

wquAdresar.Columns["tel1"].Caption = "Telefón";
wquAdresar.Columns["tel_pozn1"].Caption = "Poznámka";
wquAdresar.Columns["tel2"].Caption = "Telefón";
wquAdresar.Columns["tel_pozn2"].Caption = "Poznámka";
wquAdresar.Columns["tel3"].Caption = "Telefón";
wquAdresar.Columns["tel_pozn3"].Caption = "Poznámka";
wquAdresar.Columns["fax1"].Caption = "Fax";
wquAdresar.Columns["fax_pozn1"].Caption = "Poznámka";
wquAdresar.Columns["fax2"].Caption = "Fax";
wquAdresar.Columns["fax_pozn2"].Caption = "Poznámka";
wquAdresar.Columns["telefon"].Caption = "Spojenie";


Ak sme nastavili všetko tak, ako sme mali, výsledný formulár AddAdresar.aspx, bude vyzerať nasledovne:

Komponenta PxGreatRepeater - full zobrazenie


V komponente PxGreatRepeater sú integrované komponenty PxComboBox, PxFlyComboBox, PxJSDatePicker, a pri uvalený daného parametra (AddParamKey, AddParamWebQuery, AddParamFlyComboBox a pod.)na daný stĺpec v komponente PxWebQuery, sa jednotlivé komponenty automaticky aktivujú v komponente PxGreatRepeater. Viac uvidíte na obrázkoch dole:

Komponenta PxGreatRepeater - full zobrazenie


Komponenta PxGreatRepeater - full zobrazenie




Tu nájdete funkčný príklad s komponentou PxGreatRepeater, aj so zdrojovými kódmi. Tento funkčný príklad na tomto webe, beží pod databázou MySQL 5.0.


P.č. Názov príkladu Zdrojové Kódy SQL Script
1.8. Adresar.aspx
Adresar.aspx.cs
AddAdresar.aspx
AddAdresar.aspx.cs
SQLScript_MySQL.5.1
SQLScript_MySQL.5.0



Ďalšie články o Px Frameworku:



Nie je zmyslom, tejto časti webu dopodrobna popisovať prácu s komponentami PxFrameworku, podrobný popis komponent najdete v manuali, ktorý si môžete stiahnuť tu: Download manual pre Px Framework


 
  PxWebQuery
  PxSuperGrid
  PxEdit
  PxComboBox
  PxCheckBox
  PxJSDatePicker
  PxDbNavigator
  PxLabel
  PxFlyComboBox
  PxGreatRepeater
  PxChart
  PxUploader
  PxFilterView
  PxDbPopUp
  PxCheckBoxList
  PxRadioButtonList
  PxLogin
  PxSpeedButton
 
 
  AddParamKey()
  AddParamWebQuery()
  AddParamCheck()
  AddParamCheckList()
  AddParamRadioList()
  AddParamValidation()
  AddParamFlyCombo...
  AddParamGreatWeb...
 
 
  AddParamFilter()